package controlador;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;

import negocio.Comanda;
import negocio.ItemComanda;
import negocio.Mesa;
import gestores.GestorPedidos;
import gestores.GestorSalon;
import persistencia.DAOMesa;
import persistencia.DAOPlato;
import vista.*;

public class Controlador {
	
	private static Controlador instance;
	private static GestorPedidos instanceOfGestorPedidos;
	private static GestorSalon instanceOfGestorSalon;
	public static Controlador getInstance() {
		if(instance == null)
		{
			instance = new Controlador();
		}
		return instance;
	}
	public static GestorPedidos getInstanceOfGestorPedidos() {
		return instanceOfGestorPedidos.getInstance();
	}
	public static GestorSalon getInstanceOfGestorSalon() {
		return instanceOfGestorSalon;
	}
	public void crearComanda(Collection<ItemComandaDTO> items, MesaDTO mesa, int cantidadPersonas)
	{
		Mesa mesaNegocio = DAOMesa.getInstancia().buscarMesa(mesa.getNroMesa());
		Collection<ItemComanda> itemsNegocio = new ArrayList<ItemComanda>();
		for(ItemComandaDTO i: items)
		{
			itemsNegocio.add(new ItemComanda(i.getCantidad(),DAOPlato.getInstancia().buscarPlato(i.getPlato().getNroPlato())));
		}
		GestorPedidos.getInstance().crearComanda(itemsNegocio, mesaNegocio, cantidadPersonas);
	}
	public void crearPedidoDeDelivery(Collection<ItemComandaDTO> items, MesaDTO mesa, String direccion, int telefono)
	{
		Mesa mesaNegocio = new Mesa();
		mesaNegocio.setNroMesa(mesa.getNroMesa());
		Collection<ItemComanda> itemsNegocio = new ArrayList<ItemComanda>();
		for(ItemComandaDTO i: items)
		{
			itemsNegocio.add(new ItemComanda(i.getCantidad(),DAOPlato.getInstancia().buscarPlato(i.getPlato().getNroPlato())));
		}
		GestorPedidos.getInstance().crearComanda(itemsNegocio, mesaNegocio, 0);
		GestorPedidos.getInstance().crearPedidoDeDelivery(itemsNegocio, mesaNegocio,0, direccion);
	}
	public void demorarComanda(Comanda comanda, int tiempo)
	{
		
	}
	public String obtenerPlatosMasVendidos(){
		/*UTILIZADO EN REPORTE DE PLATOS MAS VENDIDOS*/
		return null;
	}
	public Vector<Comanda> obtenerComandasListas(){
		/*UTILIZADO EN REPORTE DE PLATOS MAS VENDIDOS*/
		return null;
	}
	public float CerrarMesa(int nroMesa)
	{
		System.out.println("Llegueeeeeeeeeeeee!");
		return GestorSalon.getInstance().cerrarMesa(nroMesa);
	}
	
	public void ObtenerCantidadPedidos(){
		
	}

}
